﻿using System.Windows.Forms;
using System;
using accesoDatos;

namespace clasesBase
{
    public static class Validador
    {
        public static void soloDecimales_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Se permite utilizar la tecla para borrar, y se restringe el ingreso sólo 
            // de números, el signo ",". Cuando el usuario ingresa un ".", se lo transforma en ","
            // ya que así está definida la configuración para almacenar estos datos en la BD.
            TextBox cajaEvento = (TextBox)sender;

            if ((e.KeyChar < 48 && e.KeyChar != 8 && e.KeyChar != 44) || e.KeyChar > 57)
            {
                e.Handled = true;

                // Si ingresó un punto, envío una coma en su lugar. 
                // Si sólo hubiera un punto, agrego el 0 delante para que no haya errores de conversión
                if (e.KeyChar == 46)
                {
                    if (!cajaEvento.Text.Contains(","))
                    {
                        if (cajaEvento.Text.Trim() == "") SendKeys.Send("0,");
                        else SendKeys.Send(",");
                    }
                }
            }
            else if (e.KeyChar == 44)
            {
                if (cajaEvento.Text.Trim() == "") { e.Handled = true; SendKeys.Send("0,"); }
                else if (cajaEvento.Text.Contains(",")) e.Handled = true;
            }
        }

        public static void soloEnteros_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Se permite el ingreso sólo de números y el uso de la tecla para borrar
            if (((e.KeyChar) < 48 && e.KeyChar != 8) || e.KeyChar > 57)
            {
                e.Handled = true;
            }
        }

        public static void soloMayusculas_LostFocus(object sender, System.EventArgs e)
        {
            TextBox cajaTexto = (TextBox)sender;
            string texto = cajaTexto.Text.Trim();
            cajaTexto.Text = texto.ToUpper();
        }

        public static string quitarCaracteresEspeciales(string cadena)
        {
            string cadenaResultado = cadena.Trim();
            cadenaResultado = cadenaResultado.Replace(" ", "");
            cadenaResultado = cadenaResultado.Replace("á", "a");
            cadenaResultado = cadenaResultado.Replace("é", "e");
            cadenaResultado = cadenaResultado.Replace("í", "i");
            cadenaResultado = cadenaResultado.Replace("ó", "o");
            cadenaResultado = cadenaResultado.Replace("ú", "u");

            return cadenaResultado;
        }

        /* Formatea la fecha según el motor de base de datos utilizada por la aplicación */
        public static string formatearFecha(DateTime fecha)
        {
            string fechaFormateada = fecha.ToString();
            if (ManejadorBD.getMotorBD().ToUpper().Equals("MYSQL")) fechaFormateada = fecha.Date.ToString("yyyy-MM-dd");
            return fechaFormateada;
        }

        public static string formatearBool(bool estado)
        {
            string boolFormateado = estado.ToString();
            if (ManejadorBD.getMotorBD().ToUpper().Equals("MYSQL")) boolFormateado = estado ? "1" : "0";
            return boolFormateado;
        }
    }
}